前言
同一時間,很多人都在查到站時間。若大家一直猛刷新,資料提供端很容易被塞爆,結果誰也拿不到最新資料。速率限制(Rate Limit)的目的就是:讓大家用可持續的節奏取資料;友善使用則是教我們在前端或排程上有禮貌得拿資料,避免把自己或對方拖垮。
為什麼要速率限制
• 保護穩定:尖峰時段不讓少數人把資源用光,大家都能查到。
• 確保新鮮度:把有限的資源花在「剛好需要」的更新上,比起亂刷更能「越查越準」。
• 方便排查:有固定節奏與錯誤說法,看到異常比較好找原因。
建議查詢頻率
範圍=建議區間;若你的畫面或流程更單純,可以取下限。
•單一站點的到站(使用者盯著看):每 10–15 秒查一次。
•列表看板(同一路線多站合併顯示):每 20–30 秒查一次。
•首頁或概覽(多路線縮圖):每 30–60 秒查一次。
•排程擷取存檔(n8n/每日統計):1–5 分鐘一次(離線用途不需要每秒刷)。
•固定資料(/routes、/stops):每 10–30 分鐘更新一次即可(或手動觸發)。
原則:越即時、越少量 → 刷得稍勤;越概覽、越大量 → 刷得更鬆。與我Day4的「資料新鮮度標準(SLO)」一起看:刷新頻率最好 ≤ SLO,才對得上畫面上的「更新於 …」。
回應被限流時(429)要怎麼做
畫面主文案:查詢過於頻繁,稍後再試
輔助說明(有秒數就寫秒數):建議 30 秒後重試(保留前一次結果)
•保留上一筆數字,但在角落標註「資料稍舊」或「更新於 HH:MM」。
•不要一直重試;等建議秒數過了再查。
•若同頁很多格子同時被限流,分批恢復更新。
失敗重試:退避策略(不用術語版)
1.第一次失敗:先等 1–2 秒再試一次。
2.再失敗:把等待時間拉長到 5–10 秒。
3.之後還失敗:最多 3~4 次就先停止,改成顯示「暫無更新,稍後再試」。
小技巧:錯開時間(隨機多加 0~2 秒),不要讓全部使用者同時戳同一秒。清單頁一次更新 1~3 個項目,間隔 0.3~0.5 秒才換下一批,避免「一口氣送 50 個請求」。
5條禮貌守則
• 只查你正顯示的:看板沒展示到的路線/站,就別查。
• 數據能重用就重用:同一路線同方向,上一頁剛查過的,在有效時間內共用。
• 有變才更新:若回應時間戳一樣或標示內容沒變,就用上一筆,不必重畫。
• 分批、錯開:清單頁分批查,像排隊進來,而不是同時湧入。
• 顯示新鮮度:永遠標「更新於 HH:MM」或「資料稍舊」。